// #ifdef H5
var jweixin = require('jweixin-module');
import {
	HttpWidget,
	Http
} from '../dt-request'
import common from './common.js'

export default {
	//判断是否在微信中    
	isWechat: function() {
		var ua = window.navigator.userAgent.toLowerCase();
		if (ua.match(/micromessenger/i) == 'micromessenger') {
			//console.log('是微信客户端')  
			return true;
		} else {
			//console.log('不是微信客户端')  
			return false;
		}
	},
	initJssdk: function(callback) {
		let http = new Http()
		let member = common.getCache('member')

		http.get('wechat_config', {})
			.then((response) => {
				var config = response.data.data
				jweixin.config({
					debug: true,
					appId: config.signPackage.appId,
					timestamp: config.signPackage.timestamp,
					nonceStr: config.signPackage.nonceStr,
					signature: config.signPackage.signature,
					jsApiList: [ //这里是需要用到的接口名称  
						'checkJsApi', //判断当前客户端版本是否支持指定JS接口  
						'onMenuShareAppMessage', //分享接口  
						'getLocation', //获取位置  
						'openLocation', //打开位置  
						'scanQRCode', //扫一扫接口  
						'chooseWXPay', //微信支付  
						'chooseImage', //拍照或从手机相册中选图接口  
						'previewImage', //预览图片接口  
						'uploadImage', //上传图片  
						'updateAppMessageShareData',
						'updateTimelineShareData',
					]
				});
				if (callback) {
					callback(res.data)
				}
			})
			.catch((response) => {})
	},
	readyShare(title, desc, link, imgUrl) {
		let http = new Http()
		let member = common.getCache('member')
		http.get('appshare', {})
			.then((response) => {
				let config = response.data.data.config
				let share = response.data.data.share
				if (!title) title = share.title
				if (!desc) desc = share.details
				if (!link) link = share.url
				if (!imgUrl) imgUrl = share.pic
				jweixin.config({
					debug: config.debug,
					appId: config.appId,
					timestamp: config.timestamp,
					nonceStr: config.nonceStr,
					signature: config.signature,
					jsApiList: config.jsApiList
				})
				jweixin.ready(function() {
					jweixin.updateAppMessageShareData({
						title: title, // 分享标题
						desc: desc, // 分享描述
						link: link, // 分享链接
						imgUrl: imgUrl, // 分享图标
						// type: '', // 分享类型,music、video或link，不填默认为link
						// dataUrl: '', // 如果type是music或video，则要提供数据链接，默认为空
					})
					jweixin.updateTimelineShareData({
						title: title, // 分享标题
						link: link, // 分享链接，该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
						imgUrl: imgUrl, // 分享图标
					})
				})
			})
			.catch((response) => {})
	},
	jssdk: function(jssdk) {
		jweixin.config({
			debug: false,
			appId: jssdk.appId,
			timestamp: jssdk.timestamp,
			nonceStr: jssdk.nonceStr,
			signature: jssdk.signature,
			jsApiList: [ //这里是需要用到的接口名称  
				'chooseWXPay', //微信支付  
			]
		})
	},
	//在需要定位页面调用  
	getlocation: function() {
		if (!this.isWechat()) {
			// console.log('不是微信客户端')  
			return;
		}
		return new Promise((resolve, reject) => {
			this.initJssdk(function(res) {
				jweixin.ready(function() {
					jweixin.getLocation({
						type: 'gcj02', // 默认为wgs84的gps坐标，如果要返回直接给openLocation用的火星坐标，可传入'gcj02'  
						success: function(res) {
							// console.log(res);  
							resolve(res)
						},
						fail: function(res) {
							console.log(res)
							reject(res)
						},
						// complete:function(res){  
						//     console.log(res)  
						// }  
					});
				});
			});
		})
	},
	openlocation: function(data, callback) { //打开位置  
		if (!this.isWechat()) {
			//console.log('不是微信客户端')  
			return;
		}
		this.initJssdk(function(res) {
			jweixin.ready(function() {
				jweixin.openLocation({ //根据传入的坐标打开地图  
					latitude: data.latitude,
					longitude: data.longitude
				});
			});
		});
	},
	chooseImage: function(callback) { //选择图片  
		if (!this.isWechat()) {
			//console.log('不是微信客户端')  
			return;
		}
		//console.log(data);  
		this.initJssdk(function(res) {
			jweixin.ready(function() {
				jweixin.chooseImage({
					count: 1,
					sizeType: ['compressed'],
					sourceType: ['album'],
					success: function(rs) {
						callback(rs)
					}
				})
			});
		});
	},
	//微信支付  
	wxpay: function(data, callback) {
		if (!this.isWechat()) {
			//console.log('不是微信客户端')  
			return;
		}
		this.initJssdk(function(res) {
			jweixin.ready(function() {
				jweixin.chooseWXPay({
					timestamp: data.timestamp, // 支付签名时间戳，注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符  
					nonceStr: data.nonceStr, // 支付签名随机串，不长于 32 位  
					package: data.package, // 统一支付接口返回的prepay_id参数值，提交格式如：prepay_id=\*\*\*）  
					signType: data.signType, // 签名方式，默认为'SHA1'，使用新版支付需传入'MD5'  
					paySign: data.paySign, // 支付签名  
					success: function(res) {
						// console.log(res);  
						callback(res)
					},
					fail: function(res) {
						callback(res)
					},
					// complete:function(res){  
					//     console.log(res)  
					// }  
				});
			});
		});
	},
	payOrder: function(order_id, group = 'order') {
		return new Promise((resolve, reject) => {
			if (!this.isWechat()) {
				reject('请用微信浏览器打开')
				return
			}

			let http = new Http()
			http.post('pay', {
					pay_type: 1,
					trade_type: 'js',
					order_group: group,
					data: JSON.stringify({
						"order_id": order_id
					})
				})
				.then((response) => {
					console.log(response.data.data)
					this.readyPay(response.data.data.config).then((response) => {
						resolve(response)
					}, (error) => {
						reject(error)
					})
				})
				.catch((response) => {
					console.log(response)
					reject(response)
				})
		})
	},
	createPay: function(group, data) {
		return new Promise((resolve, reject) => {
			// if (!this.isWechat()) {
			// 	reject('请用微信浏览器打开')
			// 	return
			// }
			let http = new Http()
			http.post('pay', {
					pay_type: 1,
					trade_type: 'js',
					order_group: group,
					data: JSON.stringify(data)
				})
				.then((response) => {
					console.log(response.data.data)
					this.readyPay(response.data.data.config).then((response) => {
						resolve(response)
					}, (error) => {
						reject(error)
					})
				})
				.catch((response) => {
					reject(response)
				})
		})
	},
	readyPay: function(data) {
		console.log(data)
		return new Promise((resolve, reject) => {
			jweixin.config({
				debug: false,
				appId: data.appId,
				timestamp: data.timestamp,
				nonceStr: data.nonceStr,
				signature: data.signature,
				jsApiList: [ //这里是需要用到的接口名称  
					'chooseWXPay', //微信支付  
				]
			})
			jweixin.ready(function() {
				jweixin.chooseWXPay({
					timestamp: data.timestamp, // 支付签名时间戳，注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符  
					nonceStr: data.nonceStr, // 支付签名随机串，不长于 32 位  
					package: data.package, // 统一支付接口返回的prepay_id参数值，提交格式如：prepay_id=\*\*\*）  
					signType: data.signType, // 签名方式，默认为'SHA1'，使用新版支付需传入'MD5'  
					paySign: data.paySign, // 支付签名  
					success: function(res) {
						resolve(res)
					},
					fail: function(res) {
						reject(JSON.stringify(res))
					},
					cencel: function(res) {
						reject('用户取消支付')
					},
					complete: function(res) {
						if (res.errMsg == 'chooseWXPay:ok') {
							resolve(res)
							return
						} else if (res.errMsg == 'chooseWXPay:cancel') {
							uni.showToast({
								title: '用户取消支付'
							})
							reject('用户取消支付')
							return
						}
						resolve(res)
					}
				})
			})
		})
	}
}

// #endif
